package com.fp.voiceshoper.receivers;

import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.fp.voiceshoper.AlarmReceiverActivity;
import com.fp.voiceshoper.utils.Log;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.PowerManager;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;

public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {

	final public static String ONE_TIME = "onetime";
	final public static String NAME_TIME = "nametime";
	

	@Override
	public void onReceive(Context context, Intent intent) {
		
        final String action = intent.getAction();
	
		   
		PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
		PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "YOUR TAG");
		// Осуществляем блокировку
		wl.acquire();

		Intent stInt=new Intent(context,AlarmReceiverActivity.class);
		stInt.addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME);
		stInt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		stInt.putExtra(ONE_TIME, intent.getIntExtra(ONE_TIME, -1));
		stInt.putExtra(NAME_TIME, intent.getStringExtra(NAME_TIME)); // Задаем параметр интента
		context.getApplicationContext().startActivity(stInt);
				
		// Здесь можно делать обработку.

//		StringBuilder msgStr = new StringBuilder();
//
//		if (extras != null && extras.getBoolean(ONE_TIME, Boolean.FALSE)) {
//			// проверяем параметр ONE_TIME, если это одиночный будильник,
//			// выводим соответствующее сообщение.
//			msgStr.append("Одноразовый будильник: ");
//		}
//		Format formatter = new SimpleDateFormat("hh:mm:ss a");
//		msgStr.append(formatter.format(new Date()));

		Log.v("READY _ 2",String.valueOf(intent.getIntExtra(ONE_TIME, -1)));
//     	Toast.makeText(context, intent.getStringExtra(NAME_TIME), Toast.LENGTH_LONG).show();
//
//		// Разблокируем поток.
		wl.release();
	}

	public void SetAlarm(Context context) {
		AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
		Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
		intent.putExtra(ONE_TIME, Boolean.FALSE); // Задаем параметр интента
		PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
		// Устанавливаем интервал срабатывания в 5 секунд.
		am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 5, pi);
	}

	public void CancelAlarm(Context context,int id) {
		Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
		PendingIntent sender = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
		Log.v("CANCEL_ALARM",String.valueOf(id));
		AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
		alarmManager.cancel(sender); // Отменяем будильник, связанный с интентом данного класса
	}

	public void setOnetimeTimer(Context context, long alarmTime,int id, String shopName) {
		Log.v("CURENT",String.valueOf(System.currentTimeMillis()));
		Log.v("SET_ALARM",String.valueOf(alarmTime));
		if (alarmTime>=System.currentTimeMillis()){
			Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
			intent.putExtra(ONE_TIME, id); // Задаем параметр интента
			intent.putExtra(NAME_TIME, shopName); // Задаем параметр интента
			Log.v("READY",shopName);
			AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);	
			PendingIntent pi = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
			am.set(AlarmManager.RTC_WAKEUP, alarmTime, pi);
		}
		
	}
}
